Copyright © 2003-2005  Benjamin Han

Release Notes

Version 1.5.5

* 1.5.4 was short-lived, but it introduced several useful new features, please read them in the previous release notes (below).

* Changing the name/regular expression for a pattern/meta pattern will now automatically mark it as a "user" pattern/meta pattern.

* Bugs fixed: Race conditions could happen when multiple threads are trying to open the internal email database/ bad site database. The symptom: some junk mails could be left unchecked, and sometimes an error message "Resource temporarily unavailable" could occur in console.log.

* Bug fixed: When selecting an IMAP inbox, sometimes messages are not checked.

* Bug fixed: Sometimes after removing an instance of a pattern, JM incorrectly assumes some meta patterns are not in use. This in turn may corrupt the pattern file.

* Improved stability when test/pattern files become inconsistent.

Version 1.5.4

* Added a new property test "Has a phishing URL": This property checks if an HTML-based message contains at least a phishing URL. A "phishing" URL is a link pointing to a place different from what it claims to. Optionally you can check whitelisted emails too so they will get filtered if they contain phishing URLs. This is a very useful property and should probably be turned on at all times.

* Added a menu option "Install Factory Version of Patterns" under the JunkMatcher menu: The installation will replace all of your "non-user" (managed) patterns and meta patterns, but it won't change the statistics, the targeting views and the various states (on/off etc) of the existing patterns. To keep your modified non-user patterns/meta patterns, you can turn their "user" mode on.  If a duplicate is found between the user and the factory patterns/meta patterns, the user pattern/meta pattern overrides the factory one. Any pattern additions will be added to the end of your test list (possibly with multiple instances targeting multiple views).

* Added a "User" checkbox in the Meta Patterns drawer - this allows you to switch a meta pattern between user and non-user (managed) mode.

* Updated the factory versions of patterns/meta patterns.

* Added an automatic log refreshing option in Preferences : Other Settings. If the option is enabled (default), when the Log window becomes the main window, it will automatically refresh its contents. It is useful when you have JunkMatcher opened in the background and want to check the Log window from time to time.

* Added one more color in the Log window: messages "corrected to junk" get orange color, and messages "corrected to clean" get yellow color.

* Added a new menu option "Recycle Log" (command-K) under the Edit menu; active only when the Log window is in the front.

* More robust URL parsing.

* When installing the Mail plugin, if you're sure Mail.app is not running but JunkMatcher reports otherwise, you can now click on "Install Anyway" to proceed.

* IMPORTANT bug fixed (Panther and Tiger): leaking sockets. Should improve stability under heavy spam attacks.

* Bug fixed (Panther): for some users the same email would show up twice in the log.

* (For developers) Xcode projects fixed so they can be built on your machine. :-P

Version 1.5.3

* Added support to Mac OS X 10.4.1 (hopefully they won't change too much from now on).

* Bug fixed (Panther and Tiger): sometimes a junk message is checked but not moved.

* Bug fixed (Tiger): sometimes a "clean" email would show up twice in the log.

* Whitelist checking is now case-insensitive (so you don't need to add "(?i)" all over the place).

* Lower the minimal height of the Analyzer window to 480 pixels for screens of lower resolution.

Version 1.5.2

This version adds only Tiger compatibility - it should run on both OS X 10.3.x (Panther) and 10.4.x (Tiger). No additional feature was added.

Version 1.5.1

* Emails containing character '\0' (ASCII code 0) are considered "malformed" now, and will be thrown away without checking. There was an exploit a while ago using this in HTML (http://secunia.com/advisories/12064/).

* When adding/updating/testing a pattern, JunkMatcher will now complain if the pattern contains a newline character (you still can match a newline character using pattern "\n" - it's just that every pattern has to be on one line).

* Bug fixed: installing in a second account no longer generates a message about "not being able to install the plugin."

* Bug fixed: installing JunkMatcher on a system with a different version of PyObjC installed should work now.

* Workaround of an interesting Mail.app behavior: when writing an email over a longer period of time, the draft saved would be colored and sent to JunkMatcher to match.

* Minor cosmetic changes to the GUI.

Version 1.5.0

This is a total rewrite of JM, with many new functionalities and a much better GUI. However, this version is not compatible with previous versions of JM. If you're running JM 1.19c or earlier, your old patterns will be moved to the Desktop folder after the first run of this version. From there you have to open the backup files with a browser, and copy/paste the patterns into the new JunkMatcher.app.

Following is a list of major improvements over the last version.

Overall Improvements

* Full unicode support: now you can write patterns/meta patterns in almost all languages, such as Chinese/Japanese/Korean/Russian/etc.

* The "rule actions" part of the "JunkMatcher" rule actually functions (previously it was just "Stop evaluating rules"). The actions will be executed if a message is classified as junk by JM. The action settings in the old version of JM are therefore moved back inside Mail.app rule setting for better stability and more flexibility.

* Incoming emails are now matched immediately, rather than being matched only after all emails are downloaded.

* You can now load emails into JM directly from Mail.app via a contextual menu item "Open in JunkMatcher" (also in Message menu).

Engine Improvements

* Properties and patterns are treated more uniformly: now both are called tests, and you can mix/reorder any test.

* Tests (properties and patterns) are more fine-grained: you can decide whether a particular test should apply when a message is sent to a particular address (via setting its recipient pattern), whether a pattern should apply when an email is in certain encoding (via setting its encoding pattern), or if an email is in HTML (turn on/off its HTML switch).

* A test can be marked as a "hard" (vs. soft) test: although you can tell JM to classify a message as junk if a certain number of positive tests are found, a positive "hard" test will immediately make the email junk.

* A single pattern can target multiple "message views" (subject, sender, body...). Changing the master pattern instantly changes all instances of it.

* You can use regular expressions in the whitelist now.

* Properties using data from Address Book will automatically update themselves when you change Address Book.

* Detailed statistics of all tests are now logged - these include CPU time, precision and recall, etc. In a future version a different matching strategy will utilize the statistics.

* Patterns are marked as either "managed" or "user". Pattern subscription (will be implemented in a future version) will only change the managed patterns.

GUI Improvements

* The entire JM app is now implemented in Cocoa and PyObjC: more user-friendly, more comprehensive, more reliable and much faster!

* You can now drag to reorder the tests.

* Test settings are now available via the Test Inspector window, including the property settings.

* You can define what HTML tags are considered good tags via GUI now (for property "too many bad HTML tags").

* Too many other improvements - see for yourself!

Installation Improvements

* The installer is now "merged" into the JM app (a wizard-like process). The installation process is kicked in only at the first time a user runs the app, so the app itself won't be reinstalled numerous times by many different users, and no more file permission/ownership problem!

* Offering an opportunity to configure some initial settings during the installation process.

* It is now possible to reinstall Mail plugin/rules via menu items in the JM app (see the the JunkMatcher menu). You can also let the JM app check the integrity of the plugin/rules every time it starts up.

* User configurations are now stored in ~/Library/Application Support/JunkMatcher. The GUI-related settings are still stored in ~/Library/Preferences/edu.cmu.cs.benhdj.JunkMatcher.plist.

* The Mail plugin now contains only minimal code. The engine resides in the JM app for the plugin to use.

* Donate to JunkMatcher: Please visit https://sourceforge.net/donate/index.php?group_id=108680

Issues of the Current Version

* Pattern importing/exporting in version 1.19c has not been re-implemented.

* Spam reporting in version 1.19c has not been re-implemented.

* IP Query tool in version 1.19c has not been re-implemented.

* Pending: checking new version.

* Pending: optimized matching strategy.

How to Uninstall

1. Remove the 3 rules the installer added for you: they are "Built-in Junk Filter", "JunkMatcher", and "Full Stop". You can also just temporarily deactivate the "JunkMatcher" rule without uninstalling, and later you can turn JunkMatcher back on by activating this rule again (in that case don't remove the items listed below!).

2. Quit Mail.app.

3. Quit and remove JunkMatcher.app.

4. Remove folder ~/Library/Mail/Bundles/JunkMatcher.mailbundle.

5. Remove folder ~/Library/Application Support/JunkMatcher.

6. Remove folder ~/Library/Preferences/edu.cmu.cs.benhdj.JunkMatcher.plist.

More Information:

* For general information see http://junkmatcher.sourceforge.net

* For Howto see http://junkmatcher.sourceforge.net/Howto/index.html

* For Discussion Forums and Mailing Lists see http://junkmatcher.sourceforge.net/Home/index.html#Forums

* I can be reached at benhdj@users.sourceforget.net - but please first read the Howto, and possibly participate discussions in the forums before sending me emails.